package ods_config

import (
	"fmt"
	"server/global"
)

func StartRtJob(jobId uint) (err error) {
	println("开始实时同步任务")
	var m OdsDbConfig
	odsJob, err := m.GetJob(jobId)
	if err != nil {
		return err
	}
	odsTb, err := m.GetTb(odsJob.OdsTbId)
	if err != nil {
		return err
	}

	odbServer, err := m.GetOdb(odsTb.SrcDbId)
	if err != nil {
		return err
	}

	dsn := odbServer.Dsn
	db := odsTb.SrcSchemaName
	tb := odsTb.SrcTbName
	if dsn == "" || db == "" || tb == "" {
		return fmt.Errorf("数据库信息不完整,dsn:%v,db:%v,tb:%v", dsn, db, tb)
	}
	err = odbServer.AddCanalTb(db, tb)
	if err != nil {
		return err
	}
	global.JobRunning[odsTb.OdsTbName] = 1
	return nil
}

func StopRtJob(jobId uint) (err error) {
	println("停止实时同步任务")
	var m OdsDbConfig
	odsJob, err := m.GetJob(jobId)
	if err != nil {
		return err
	}
	odsTb, err := m.GetTb(odsJob.OdsTbId)
	if err != nil {
		return err
	}

	odbServer, err := m.GetOdb(odsTb.SrcDbId)
	if err != nil {
		return err
	}
	dsn := odbServer.Dsn
	db := odsTb.SrcSchemaName
	tb := odsTb.SrcTbName
	if dsn == "" || db == "" || tb == "" {
		return fmt.Errorf("数据库信息不完整")
	}

	err = odbServer.RemoveCanalTb(db, tb)
	if err != nil {
		return err
	}
	delete(global.JobRunning, odsTb.OdsTbName)
	return nil
}
